<?php
/*
* @desc Inclui a classe Model.
* @param Class Model
*/
include_once("Model.class.php");

class Paginacao extends Model{
		
	// Variavel global de conexao ao BD
	private $mySQL;
	// Variaveis necessarias
	public $tabela_bd;
	public $numPg;
	public $limite;
	public $chave_primaria;
    public $titulo;
    public $url_pagina;
    public $numPgs;
	public $total;
	public $inicio;
	public $conta;
	public $url;
	public $result_while;
	public $result_order;
	public $cp; // Chave pimaria
	public $ti; // Titulo
	public $desc; // Descricao
	public $foto; // Foto
	public $tipo_info; // Tipo da informacao
	public $localidade; // Localidade
	public $url_mapa; // Url do Mapa
	public $order_by_query; // Ordena a consulta por esta variavel
	public $id_order; //id da ordenacao selecionada
	public $localidade_order; // Localidade selecionada
	// Codigo html da paginacao
	public $htmlCode;

	
		
   /*
	* @desc Metodo construtor da classe Paginacao.
    * @param Construtor
    */
    function __construct($tabela_bd, $numPg, $limite, $chave_primaria, $titulo, $url_pagina, $order_by_query, $tipo_info)
	{
		//seta os valores default
		$this->tabela_bd			= $tabela_bd;
		$this->numPg 				= $numPg;
		$this->limite 				= $limite;
		$this->chave_primaria		= $chave_primaria;
		$this->titulo				= $titulo;
		$this->url_pagina			= $url_pagina;
		$this->result_while			= "";
		$this->localidade_order		= "";
		$this->order_by_query		= $order_by_query;
		$this->tipo_info			= $tipo_info;
		// Seta como vazio o codigo html
		$this->htmlCode				= "";
		
		
		/* 
		 * @desc Inclui a classe Banco
		 * @param mySQL = 	Objeto para conexao
		 * 					Instancia um objeto para conexao ao Banco
		 */
		@include_once("Banco.class.php");
     	$this->mySQL = new Banco;
	}
	
	
	
	/*
	 * @desc Realiza a paginacao dos dados
	 * @param Metodo paginacaoDados() 
	 */
	function paginacaoDados()
	{
		// Executa a query ($total)
		$result = $this->mySQL->sql("SELECT count(*) as total FROM $this->tabela_bd WHERE tipo_info='".$this->tipo_info."'");
		// Obtem o numero de linhas da tabela afetado pela consulta
		$this->total = mysql_result($result, 0, "total");
		
		// Verifico o numero da pagina atual
		if(isset($this->numPg))
		{
			$this->numPg = $this->numPg;
		}
		else
		{
			$this->numPg = 0;
		}
		
		
		// Verifico o numero de paginas a ser exibidas
		$this->numPgs = ceil($this->total / $this->limite);
		// Defino o inicio da paginacao
		$this->inicio = $this->numPg * $this->limite;
		
		
		// Ordena de acordo com a selecao do usuario
		if (!isset($this->order_by_query))
		{
			$this->order_by_query	= "ORDER BY ".$this->titulo;
		}
		else if (isset($this->order_by_query) and ($this->order_by_query != "titulo"))
		{
			// seta o valor para ordenacao
			$this->order_by_query	= "ORDER BY LOC.local, INFO.titulo";	
		}
		else if(isset($this->order_by_query) and ($this->order_by_query == "titulo"))
		{
			$this->order_by_query	= "ORDER BY ".$this->titulo;
		}
			
		
		// Executa a query (define o limite de exibicoes por pagina)
		$this->result_while = $this->mySQL->sql("SELECT INFO.id, INFO.titulo, INFO.desc, INFO.foto, INFO.id_localidade, INFO.url_mapa, LOC.local FROM $this->tabela_bd INFO, localidades LOC WHERE LOC.id=INFO.id_localidade AND tipo_info='".$this->tipo_info."' $this->order_by_query ASC LIMIT $this->inicio,$this->limite");
		// Obtem o numero de linhas da tabela afetado pela consulta
		$this->conta = $this->mySQL->affected_rows;
			
	}
	
	
	function show()
	{
		// Exibe os resultados a serem paginados
		while($l = mysql_fetch_array($this->result_while)) {
		
			$this->cp 			= $l[0];
			$this->ti 			= $l[1];
			$this->desc 		= $l[2];
			$this->foto 		= $l[3];
			$this->localidade 	= $l[4];
			$this->url_mapa 	= $l[5];
		
			// Executa a query (localiza a localidade pelo id)
			$this->result_order = $this->mySQL->sql("SELECT * FROM localidades WHERE id='".$this->localidade."'");
			// Define os dados da localizacao
			$l_existe = mysql_fetch_array($this->result_order);
			// Recebe o valor do local	
			$this->localidade	= $l_existe['local'];
			
			
			echo '<div class="box-bg-traco">';
			echo '	<div class="box-div-img">';
			echo '	<div class="box-container-img">';
			echo '		<a href='.$this->foto.' rel="lightbox" title='.htmlentities($this->ti).'>';
			echo '			<img src='.$this->foto.' width="102" height="64" alt='.htmlentities($this->ti).' />';
			echo '		</a>';
			echo '	</div>';
			echo '	</div>';
			echo '	<div class="box-div-texto">';
			echo '		<strong>'.htmlentities($this->ti).'</strong><br />'.nl2br(htmlentities($this->desc)).'';
			echo '	</div>';
			echo '	<div class="box-div-desc">';
			echo '		'.htmlentities($this->localidade).' | <a href='.$this->url_mapa.' title='.$this->url_mapa.' target="_blank">Mapa</a>';
			echo '	</div>';
			echo '</div>';
		
		}
		
		// Exibe os botoes das galerias de exibicao
		if($this->numPg > 0)
		{
		   // Botao anterior
		   $menos	  = $this->numPg - 1;
		   $this->url = $_SERVER["PHP_SELF"].$this->url_pagina."&order=".$_GET["order"]."&numPg=".$menos;
		   $this->htmlCode.= "<a href=\"".$this->url."\" title=\"Anterior\"> << </a>&nbsp;";
		}
		for($i = 0;$i < $this->numPgs; $i++)
		{
		   // Botoes numericos
		   $this->url = $_SERVER["PHP_SELF"].$this->url_pagina."&order=".$_GET["order"]."&numPg=".$i;
		   
		   // Marca como selecionado o numero da pagina atual
		   if ($_GET["numPg"] == $i)
		   {
		   		$paginacaoClass = "class=\"atual\"";
		   } 
		   else
		   { 
		   		$paginacaoClass = "";
		   }
		   
		   // Adiciona o numero das paginas ao codigo html
		   $this->htmlCode.= "<a href=\"".$this->url."\" title=\"".($i+1)."\" ".$paginacaoClass.">".($i+1)."</a> ";
		}
		if($this->numPg < ($this->numPgs - 1))
		{
		   // Botao proximo
		   $mais 	  = $this->numPg + 1;
		   $this->url = $_SERVER["PHP_SELF"].$this->url_pagina."&order=".$_GET["order"]."&numPg=".$mais;
		   $this->htmlCode.= "<a href=\"".$this->url."\" title=\"Pr&oacute;ximo\"> >> </a> ";
		
		}
		
		// Escreve os botoes
		   echo "<!-- xxxxx Paginacao xxxxx-->";
	       echo "<div class=\"listar-dados-bg-paginacao\">";
		   echo "<div class=\"listar-dados-paginacao\">";
		   echo $this->htmlCode;
		   echo "</div>";
		   echo "</div>";
		   echo "<!-- xxxxx fecha Paginacao xxxxx-->";
		
	}

	
	
}// Fecha class
?>